
// Promise.race(promises): 接受一个 Promise 对象的数组，返回一个新的 Promise。一旦数组中的某个 Promise 解决或拒绝，返回的 Promise 就会以相同的状态解决或拒绝。意思是谁快听谁的




// Promise.race 用于竞争处理多个Promise，它会返回第一个被解决或被拒绝的Promise的结果。
// 无论其他 Promise 是否完成，一旦有一个 Promise 完成，Promise.race 就会立即返回结果。


// 场景描述：

// 假设我们有一个系统需要从多个服务器获取同样的数据。为了确保快速响应，我们可以同时向多个服务器发出请求，使用 Promise.race 返回最快响应的结果，而忽略其他较慢的请求。

// 代码实现：

// 模拟从服务器1获取数据
function fetchFromServer1() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            console.log('从服务器1获取数据');
            resolve({ server: 1, data: 'Server 1 Data' })
        }, 3000);
    })
}

// 模拟从服务器2获取数据
function fetchFromServer2() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            console.log('从服务器2获取数据');
            resolve({ server: 2, data: 'Server 2 Data' });
        }, 2000); // 模拟服务器2响应时间为2秒
    });
}

// 模拟从服务器3获取数据
function fetchFromServer3() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            console.log('从服务器3获取数据');
            resolve({ server: 3, data: 'Server 3 Data' });
        }, 1000); // 模拟服务器3响应时间为1秒
    });
}

// 使用 Promise.race 竞争处理
Promise.race([fetchFromServer1(), fetchFromServer2(), fetchFromServer3()])
    .then((result) => {
        console.log('最快的响应数据:', result);

    })
    .catch((error) => {
        console.log('获取数据失败:', error);

    })